package coop.bancocredicoop.proyectos.gd.controller.buscarCliente;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import coop.bancocredicoop.proyectos.gd.crecerxxi.CrecerXXICustomer;
import coop.bancocredicoop.proyectos.gd.crecerxxi.CrecerXXIWrapper;
import coop.bancocredicoop.proyectos.gd.crecerxxi.CrecerXXIWrapperFactory;

public class BuscarClienteController {

	public void run(HttpServletRequest request) throws Exception {

		if (request.getParameter("buscar") != null) {
			buscar(request);
		}

		//request.setAttribute("listDocument", new Boolean(false));
	}

	private void buscar(HttpServletRequest request) throws Exception {

		
		if (request.getParameter("valor") == null ||
				request.getParameter("valor").trim().equals("")) {
			request.setAttribute("error", "Debe indicar un valor de b&uacute;squeda.");
			return;
		}
		else if (!request.getParameter("buscarPor").equals("nombre")) {
			try {
				Long.parseLong(request.getParameter("valor"));
			}
			catch (Exception e) {
				request.setAttribute("error", "La b&uacute;squeda debe ser un n&uacute;mero.");
				return;
			}
		}
		else if (request.getParameter("valor").length() < 5) {
			request.setAttribute("error", "La b&uacute;squeda debe ser mayor a 4 letras.");
			return;
		}

		CrecerXXIWrapper crecerXXIWrapper =
				new CrecerXXIWrapperFactory().getCrecerXXIWrapper();
		List<CrecerXXICustomer> listaAsociados;

		try {

			if (request.getParameter("buscarPor") != null &&
				request.getParameter("buscarPor").equals("idPersona")) {				
				listaAsociados = crecerXXIWrapper.findCustomerByIdPersona(request.getParameter("tipoPersona"),
						Long.valueOf(request.getParameter("valor")));
	
			}
			else if (request.getParameter("buscarPor") != null &&
					 request.getParameter("buscarPor").equals("cuit")) {
				listaAsociados = crecerXXIWrapper.findCustomerByCuit(request.getParameter("tipoPersona"),
						request.getParameter("valor"));
			}
			else {
				listaAsociados = crecerXXIWrapper.findCustomerByNombre(request.getParameter("tipoPersona"),
						request.getParameter("valor"));
			}
	
			request.setAttribute("listCustomer", listaAsociados);
			
		} catch (Exception e) {
			request.setAttribute("error", e.getMessage());
		}

	}

}
